![]() XHost |
Gazduire site-uri web nelimitata ca spatiu si trafic lunar la doar 15 eur / an. Inregistrare domenii .ro .com .net .org .info .biz .com.ro .org.ro la preturi preferentiale. Pentru oferta detaliata accesati site-ul BluePink |
1.1. Baza de date(BD)
1.2. Sistemul de gestiune a bazelor de date (SGBD)
1.3. Administrarea BD
1.1. Baza de date
a)
Evoluţie
Într-un calculator datele sunt stocate în memoria internă(temporar)
şi în memoria externă (persistent).
În memoria externă , evoluţia modului de memorare a datelor a
fost determinată de:
·
Accesul
cât mai rapid şi uşor la date;
·
Stocarea
unui volum cât mai mare de date;
·
Creşterea
compexităţii datelor;
·
Perfecţionarea
echipamentelor de culegere, stocare, transmitere şi prelucrare a datelor.
Bazele de date, ca mod de organizare a datelor în memoria externă, au
evoluat din fişiere printr-un proces de integrare a lor(fişiere
şi legăturile dintre ele) şi ţinând cont de
aplicaţiile aferente.
Baza de date(BD) = un ansamblu de date organizat,
coerent, structurat, în condiţii de redundanţă minimă
şi controlată, accesibil mai multor utilizatori în timp util.
Generaţii
de BD:
·
generaţia
I = BD arborescente şi reţea (până la sfârşitul anilor
’70);
·
generaţia
a-II-a = BD relaţionale (sfârşitul anilor ’70 şi până
acum);
·
generaţia
a-III-a = BD orientate obiect (sfârşitul anilor ’80 şi până
acum).
b)
Elementele
unei BD
Noţiuni
(elemente) comparative între organizarea datelor în fişiere şi baze
de date:
sistem de fişiere fişiere înregistrări câmpuri valori
lumea reală
baza de date colecţii de date familie de caracteristici domenii
(entităţi) caracteristici de valori
Domeniul de
valori= mulţimea
valorilor posibile pentru o caracteristică(ex.: culorile posibile pentru
un automobil).
Caracteristica= definirea şi descrierea unui anumit
aspect(proprietăţi) dintr-o entitate a lumii reale (ex.:marca auto)
Familia de caracteristici=ansamblul caracteristicilor care se referă la aceeaşi entitate din lumea reală (ex.: mulţimea caracteristicilor prin care se poate descrie un automobil {NUMĂR, MARCA, CAPACITATE_CILINDRICĂ, CULOARE}).
Colecţia de date(entitatea)=o familie de caracteristici asupra căreia se aplică un predicat (care conduce la o relaţie de ordine între caracteristici şi la obţinerea informaţiilor cu un anumit sens) căruia i se afectează anumite legături.
c)
Conceptul
de BD
Baza de date=un ansamblu de colecţii de date
aflate în interdependenţă, împreună cu descrierea datelor
şi a legăturilor dintre ele.
Sistemul de
bază de date(SBD)=un
ansamblu de elemente intercondiţionate care contribuie la realizarea
şi exploatarea unei aplicaţii cu baze de date.
Notă. Noţiunea similară pentru SBD,
într-o accepţiune mai veche este “Banca de date”.
Arhitectura
unui SBD=prezentarea
grafică a elementelor unui SBD şi a legăturilor dintre ele.
Vizual se
folosesc două tipuri de arhitecturi de SBD, funcţie de ceea ce se
evidenţiază grafic: pe componente, pe niveluri de organizare a
datelor.
Arhitectura pe
componente dă o
imagine asupra elementelor constitutive ale unui SBD şi a
interdependenţei dintre ele (fig. 1.1).
Date Software Fig. 1.1
utilizatori
Arhitectura pe componente
a unui SBD
Elemente
auxiliare
Notă. Din această arhitectură
rezultă componentele unui SBD:
1.Datele
organizate într-o bază de date care conţine:
·
colecţiile
cu date propriu-zise;
·
dicţionarul
de date;
·
fişierele
anexe.
2.Software-ul
aferent realizării şi expoatării bazei de date, care conţine:
·
sistemul
de gestiune a bazelor de date(SGBD);
·
programele
de aplicaţie.
3.Elementele
auxiliare sunt componente care contribuie la realizarea şi
funcţionarea întregului SBD:
·
set
de proceduri automate(rutine) şi manuale;
·
reglementări
legale şi administrative;
·
mijloace
hardware utilizate;
·
personalul
implicat pe categorii de utilizatori.
Structurează
un SBD pe trei niveluri şi dă o imagine despre modul de organizare
şi funcţionare al acestuia.(fig. 1.2)
Viziuni asupra
BD Manipulare date Descriere date Niveluri de organizare date
Programator Program Structura externă Logic
de
aplicaţie
aplicaţie1 … (logică) …
Administrator SGBD Structura Conceptual
bază de date S.O. conceptuală …
Inginer de BAZA DE Structura internă Fizic
sistem DATE (fizică) …
Fig. 1.2
Arhitectura pe niveluri a unui SBD
Din arhitectura
de mai sus rezultă nivelurile de organizare(reprezentare) a datelor în
baza de date:
1.Nivelul
logic este dat de viziunea programatorului asupra BD.
·
Programatorul
realizează programele de aplicaţie pentru descrierea şi
manipularea datelor
scrise
într-un SGBD;
·
Programele
implementează structura externă(logică) a datelor;
·
Structura
externă este dedusă din structura conceptuală;
·
Structura
externă reprezintă viziunea programatorului asupra BD pentru o
anumită
aplicaţie;
·
Viziunea
programatorului este independentă de suportul tehnic de informaţie
(independenţa fizică);
·
Rezultatul
nivelului logic este schema externă, ca parte din schema conceptuală,
implementată cu ajutorul unui SGBD.
2.Nivelul
conceptual este dat de viziunea administratorului BD asupra datelor.
·
Administratorul
realizează structura conceptuală a BD, eventual cu instrumente
oferite de
SGBD;
·
Structura
conceptuală se obţine utilizând un anumit model de date pentru BD
şi o tehnică
de proiectare adecvată;
·
Structura
conceptuală este o reprezentare în interiorul sistemului a
realităţii pe care BD o
transcrie;
·
Viziunea
administratorului asupra BD este independentă de aplicaţiile care vor
fi
dezvoltate (independenţă logică);
·
Rezultatul
nivelului conceptual este schema conceptuală(schema);
·
Realizarea
schemei corespunde unei activităţi de modelare pentru că este
vorba de o
traducere în termeni abstracţi,
entităţile lumii reale.
3.Nivelul
fizic este dat de viziunea inginerului de sistem asupra datelor.
·
Inginerul
de sistem realizează structura internă (fizică);
·
Structura
internă este dedusă din cea externă conform unor tehnici de
alocare pe suportul
fizic;
·
Structura
internă corespunde descrierii datelor pe suportul fizic de
informaţie;
·
Rezultatul
la nivelul fizic este schema internă (fizică) care se defineşte
în termeni de
fişiere şi înregistrări;
·
Implementarea
schemei interne se face cu ajutorul sistemului de gestiune a fişierelor
din
SGBD şi/sau din S.O., prin gestiunea fizică a
periferialelor.
Notă. La nivelul structurilor externe şi
conceptuală se întâlnesc legături între date de tipul:
OWNER-o
înregistrare părinte cu toate înregistrările copil aferente
NEXT-înregistrarea
curentă cu cea următoare ce poate fi accesată
PRIOR-înregistrarea
curentă cu cea precedentă care a fost accesată.
1.2 Sistemul de gestiune a bazelor de
date(SGBD)
SGBD=un ansamblu de programe(software) care
realizează interfaţa dintre o bază de date şi utilzatorii
acesteia şi care asigură realizarea următoarelor
activităţi:
·
Definirea
structurii bazei de date;
·
Încărcarea/validarea datelor în baza de date;
·
Accesul
la date(regăsire, actualizare);
·
Întreţinerea
BD(regăsire, refacere, conversie etc.);
·
Protecţia
datelor.
Funcţiile unui SGBD
Pentru atingerea obiectivelor sale, orice
SGBD are patru funcţii obligatorii şi de un mare grad de
generalitate.
1. Definirea
datelor permite descrierea şi definirea structurii de date a BD
(entităţile, caracteristicile acestora, legăturile dintre date,
integritatea datelor) cu ajutorul unui LDD (Limbaj de Descriere a Datelor), la
nivelul conceptual, logic şi fizic.
Notă. Rezultatul funcţiei de descriere
este schema BD memorată în cod intern (în dicţionarul BD).
2. Manipularea
datelor permite încărcarea BD, regăsirea datelor (de la criterii
foarte simple la complexe), actualizarea datelor, cu ajutorul unui LMD (Limbaj
de Manipulare a Datelor).
3. Utilizarea
datelor asigură interfeţe necesare pentru comunicarea tuturor
categoriilor de utilizatori cu baza de date.
4. Administrarea
datelor permite întrţinerea şi gestionarea BD.
1.3 Administrarea BD
Administratorul
BD=una sau mai multe
persoane cu experienţă în analiză şi proiectare, care se
ocupă de organizarea şi întreţinerea BD.
Niveluri de
administratori după
activităţile desfăşurate:
·
administrator
global realizează:
-
schema
(conceptuală) a BD din cerinţele aplcaţiei;
-
organizarea
datelor la nivel logic (colaborează).
·
administrator
de aplicaţie realizează:
-
schema
externă (logică) pentru o aplicaţie din cerinţele de
prelucrare;
-
organizarea
datelor la nivel fizic (colaborare).
·
administratorul
bazei de date realizează:
-
schema
internă (fizică) a datelor;
-
reorganizarea
bazei de date;
-
gestionează
funcţionarea BD.
Sarcinile
administratorului BD sunt
structurate după etapele de realizare a unei BD:
-
la
analiza şi proiectarea BD:
·defineşte obiectivele BD;
·colaborează la formularea cerinţelor
aplicaţiei;
·defineşte dicţionarul BD(schema,
restricţii de integritate etc.);
·colaborează la schema externă şi la
cea internă;
·concepe protecţia datelor.
-
la
implementarea BD:
·
elaborează
documentaţie;
·
defineşte
regulile de implementare şi dare în folosinţă a BD;
·
asigură
încărcarea BD din diferite surse de date.
-
la
exploatarea BD:
·
monitorizează
accesul la date;
·
asigură
protecţia datelor;
·
întreţine
funcţionarea BD la parametrii proiectaţi.
Instrumente la dispoziţia administratorului BD
pentru a-şi îndeplini sarcinile:
·
instrumentele
oferite de SGBD pentru: reorganizarea BD, refacerea BD, analize statistice,
gestionarea dicţionarului de date,
protecţia datelor.
·
Instrumente
specifice create de administratori şi programatori.
CAPITOLUL II ORGANIZAREA DATELOR ÎN MEMORIA EXTERNĂ
2.1. Evoluţia organizării datelor
2.2. Organizarea datelor în fişiere
2.3. Modele de structurare a datelor în BD
2.4. Protecţia BD
2.1. Evoluţia organizării datelor
Organizarea datelor = definirea şi structurarea datelor în memoria internă sau în memoria externă (în colecţii) şi stabilirea legăturilor între date, conform unui model de date.
Evoluţia organizării datelor în memoria externă a avut în vedere căteva aspecte:
Etape(1) |
Mod de organizare a datelor (2) |
Structura de date(3) |
Mod de prelucrare (4) |
Redundanţă (5) |
Software utilizat (6) |
1. Înainte de 1965 |
Fişiere secvenţiale |
Logică coincide cu fizică |
Pe loturi (batch) |
Mare, necontrolat |
Operaţii simple de I/E (limaj asamblare şi universal) |
2. Anii ‘60 |
Fişiere secvenţiale, indexate, directe |
Logică şi fizică |
Loturi, on-line |
Mare, necontrolat |
Chei simple de acces (limbaje universale) |
3. Anii ‘70 |
Baze de date arborescente, reţea |
Logică, fizică, conceptuală |
Loturi, convenţional |
Scade, controlat |
Chei multiple de acces, legături între date, protecţia (SGBD) |
4. Sfărşitul anilor '70 până acum |
Baze de date relaţionale |
Logică, fizică, conceptuală |
Convenţional, interactiv |
Mică, controlat |
Limbaje de regăsire, protecţie,concurenţă (SGBD) |
5. Sfârşitul anilor '80 până acum |
Baze de date orientate obiect |
Logică, fizică, conceptuală |
Interactiv |
Minimă, controlat |
Limbaje din programarea OO (SGBD) |
2.2. Organizarea datelor în fişiere
Fisier = o colecţie organizată de date unite după criterii comune calitative, de prelucrare şi scop.
-
actualizarea se referă la trei operaţii : adaugarea, modificarea, ştergerea de înregistrări;
-
natura datelor din fişier trebuie să fie omogenă (să se refere la aceeaşi entitate din lumea reală);
-
prelucrarea datelor din fişier se referă la tipul şi frecvenţa operaţiilor efectuate pe înregistrări;
-
volumul de date din fişier (în bytes).
2.
Structura unui fişier:
fişier înregistrări câmpuri valori.
Categorii de moduri de organizare:
a) Standard
·
Este cea mai veche şi există pe toate tipurile de calculatoare;
·
Înregistrarea este formată dintr-un şir de caractere dispus pe o linie acceptată de periferic;
·
Toate limbajele recunosc fişiere standard de intrare şi ieşire.
b) Clasică (elementară)
·
Organizarea se face pe medii magnetice sau optice;
·
Tipuri:
-
SECVENŢIALĂ
o
Înregistrările sunt dispuse în fişier una după alta fără nici o ordine prestabilită.
o
Localizarea unei înregistrări se face prin parcurgerea tuturor înregistrărilor anterioare ei (secvenţial).
o
Toate sistemele de operare şi limbajele de programare acceptă organizarea secvenţială.
-
RELATIVĂ
o
Înregistrările sunt dispuse în fişier una după alta şi numerotate (de către sistem) de la 0 sau 1 la câte sunt (număr de realizare)
o
Localizarea unei înregistrări se poate face secvenţial sau direct prin numărul de realizare.
-
INDEXAT-SECVENŢIALĂ
o
Înregistrările sunt dispuse în fişier ăn ordine strict crescătoare după o cheie (face parte din înregistrare).
o
Cheia este unul sau mai multe câmpuri care identifică în mod unic o înregistrare.
o
Fişierului îi este ataşat o tabelă de indecşi care face legătura între valoarea cheii şi adresa fizică a înregistrării.
o
Localizarea unei înregistrări se poate face secvenţial dar şi direct prin cheie:
ü
se compară cheia înregistrării căutate cu indecşii din tabela de index şi se localizează direct partea fizică a fişierului în care se află înregistrarea căutată;
ü
în partea fizică localizată se face o căutare secvenţială a înregistrării dorite.
c) Specială (complexă)
·
Se bazează pe modurile de organizare clasice.
·
Sunt utilizate în baze de date şi în sisteme de fişiere.
·
Tipuri (câteva):
-
PARTIŢIONAREA
·
Înregistrările din fişier sunt grupate în partiţii sub un nume.
·
În cadrul unei partiţii înregistrările sunt organizate secvenţial.
·
Se utilizează în biblioteci de programe
-
MULTIINDEXAREA
·
Este o extindere a indexării prin utilizarea mai multor chei alese de programator.
·
Spaţiul ocupat este mai mare
·
Se utilizează pentru fişiere care necesită regăsiri intense multicriteriale.
-
INVERSĂ
·
Presupune existenţa a două fişiere: de bază şi invers.
·
Fişierul de bază conţine datele propriu-zise şi are organizare secvenţială. El este fişierul în care se caută.
·
Fişierul invers este construit din cel de bază (printr-o tehnică de inversare) şi are organizare relativă. El este fişierul prin intermediul căruia se caută.
·
Spaţiul ocupat necesar este cam de 3,5 ori mai mare faţă de cât ocupă fişierul de bază.
4) Modul de acces = modul în care se determină locul ocupat de o înregistrare într-un fişier şi depinde de modul de organizare.
Tipuri de moduri de acces:
-
SECVENŢIAL = localizarea unei înregistrări se face prin parcurgerea tuturor înregistrărilor care o preced.
·
Este permis accesul secvenţial pentru toate tipurile de fişiere.
·
Se recomandă pentru fişierele din care sunt necesare, la o prelucrare, peste 50% din numărul total de înregistrări.
·
Pentru optimizare se recomandă ordonarea fişierului.
-
DIRECT = localizarea unei înregistrări se face cu ajutorul unei chei definite de programator.
Notă. Accesul direct se poate face după numărul de realizare sau după o valoare a cheii.
-
DINAMIC = la o singură deschidere de fişier se pot localiza, alternativ şi repetat, înregistrări în acces secvenţial şi direct.
Notă. Criterii de comparaţie pentru organizarea datelor în fişiere şi baze de date sunt în Anexa 2.
2.3. Modele de structurare a datelor în BD
Informaţia, care se reprezintă în calculator în memoria internă sau externă, se poate defini structural după schema:
are ca are ca are ca
INFORMAŢIA ENTITATEA ATRIBUTUL VALOAREA
obiect proprietate (CARACTERISTICA) măsură
Modelul de structură = descrierea tuturor atributelor unei entităţi în interdependenţă. Valorile atributelor se materializează prin date, care dau o reprezentare simbolică a informaţiilor.
Modelul de date = ansamblul de concepţie şi instrumente pentru a realiza schema conceptuală a datelor(fig. 2.1.).
Schema [conceptuală] = descrierea fenomenelor din realitatea înconjurătoare prin entităţi şi atribute, împreună cu toate corelaţiile (legăturile) dintre ele.
Definirea schemei este o activitate de modelare pentru că traduce în termeni abstracţi entităţile lumii reale.
Schema BD se reprezintă cu ajutorul unui model de date implementat prin intermediul unui SGBD adecvat.
Elementele (componentele) oricărui model de date sunt:
1.
Definirea structurii modelului (partea structurală):
·
definirea entităţilor şi a atributelor asociate;
·
definirea legăturilor (asociarea) dintre entităţi.
Asocierea poate fi de tipul :
-
unu la unu (1:1)
-
unu la mulţi (1:M)
-
mulţi la mulţi (M:N)
-
neprecizat explicit
Definirea structurii de date se face cu un LDD dintr-un SGBD.
2.
Operatorii modelului (partea de manipulare) care acţionează asupra structurilor de date pentru operaţii de prelucrare (compunere, actualizare etc.).
Operatorii se implementează cu ajutorul unui LMD dintr-un SGBD.
3.
Regulile de integritate (partea de coerenţă) sunt restricţii stabilite la descrierea datelor, care le asigură acestora menţinerea corectitudinii şi dau logica modelului.
Restricţiile se implementează cu un LDD din SGBD.
Tipuri de modele de date pentru BD:
·
fundamentale: ierarhice, reţea, relaţionale, orientate obiect;
·
derivate (extinse din cele fundamentale): distribuite etc.
1.
Definirea structurii modelului ierarhic.
a)
Definirea entităţilor se face prin noţiune de tip de înregistrare (clasă de entităţi), care este formată din caracteristici (câmpuri).
Realizarea (instanţa) unui tip de înregistrare este dată de ansamblul valorilor pentru câmpurile acesteia (înregistrarea)..
b)
Definirea legăturilor dintre entităţi se face fizic şi conduce la structura de tip ierarhic (arborescent) reprezenată sub forma unei diagrame (fig. 2.2.).
nivel 0 TIP_ÎNREG 0
nivel 1 TIP_ÎNREG 11 TIP_ÎNREG 12 TIP_ÎNREG 13
![]() |
![]() |
nivel 2 TIP_ÎNREG 21 TIP_ÎNREG 22 TIP_ÎNREG 23
……..
Fig. 2.2. Diagrama de structură ierarhică
Caracteristici ale structurii ierarhice (arborescente):
-
Fiecare nod corespunde unui tip de înregistrare şi fiecare drum corespunde unei legături (asocieri).
-
Orice acces la un nod se face prin vârful ierarhiei, numit rădăcină, pe o singură cale.
-
Un nod subordonat (copil) nu poate avea decât un singur superior (părinte).
-
Un superior poate avea unul sau mai mulţi subordonaţi.
-
Legătura copil-părinte este doar de tip 1:1 (la o realizare copil corespunde o singură realizare părinte).
-
Legătura părinte-copil poate fi de tip 1:1 sau 1:M.
-
În structură există un singur nod rădăcină şi unul sau mai multe noduri dependente situate pe unul sau mai multe niveluri.
-
O ierarhie de tipuri de înregistrări se numeşte tip arbore.
-
O realizare a unui tip arbore este formată dintr-o singură realizare a tipului de înregistrare rădăcină împreună cu o mulţime ordonată formată din una sau mai multe realizări ale fiecărui tip de înregistrare de pe nivelurile inferioare.
-
Ordonarea realizărilor dintr-un arbore conduce la o secvenţă ierarhică.
Exemplu. Fie tip înregistrare rădăcină PERSOANA cu tipurile înregistrări subordonate ADRESA şi COPII. Tip înregistrare COPII are subordonat tipul înregistrare SPORT.
![]() |
nivel 0 PERSOANA CODP NUMEP
![]() |
|||||
![]() |
![]() |
nivel 1 ADRESA LOC STR TEL COPII PRENUME DATAN SEX
![]() |
|||
![]() |
|||
nivel 2 SPORT NUMES LOC
O secvenţă ierarhică de realizări pentru arborele de mai sus, poate fi:
PERSOANA 10 POPA MARIA
ADRESA IAŞI UNIRII 123456
COPII ANDA 220285 F
SPORT SCHI AZUGA
TENIS IAŞI
COPII MARIA 221187 F
SPORT PATINAJ IAŞI
La un acces, întreaga secvenţă ierarhică este disponibilă automat.
2.
Operatorii modelului ierarhic
-
Localizarea unui arbore în BD: se localizează o realizare a tipului de înregistrare rădăcină.
-
Trecerea de la un arbore la altul în BD: se trece de la orealizare a tipului înregistrare rădăcină (secvenţă ierarhică) la o altă realizare a aceluiaşi tip înregistrare rădăcină.
-
Trecerea de la o realizare (înregistrare) la alta într-un arbore (secvenţă ierarhică) : se poate face trecerea pe acelaşi nivel sau pe niveluri diferite între tipuriînregistrări legate între ele.
-
Actualizarea într-un arbore : adăugarea, modificarea sau ştergerea unei înregistrări. Operaţia este greoaie şi consumatoare de resurse calculator (spaţiu şi timp) pentru că antrenează automat toate înregistrările din arbore care se înlănţuie cu înregistrarea actualizată.
Notă. Operatorii de mai sus sunt la nivel de înregistrare; acţionează pe o înregistrare şi produce tot o înregistrare.
Există şi operatori la nivel de mulţime de înregistrări care se implementează în LMD mult mai greu.
3.
Restricţiile de integritate ale modelului ierarhic.
-
O realizare subordonat este totdeauna asociată unei singure realizări superior.
-
Dacă un tip de înregistrare nu are realizări atunci nici tipurile înregistrări descendente nu au realizări.
Notă. Efectele restricţiilor de integritate sunt:
·
completarea operaţiei de actualizare;
·
dacă o realizare a unui nod subordonat trebuie să fie asociată cu mai multe realizări ale nodului părinte atunci ea trebuie multiplicată (creşte redundanţa);
·
dau logica şi corenţa modelului arborescent.
Caracterizarea modelului ierarhic.
-
numărul de ierarhii posibile creşte combinatoric cu numărul înregistrărilor, în legătura părinte-copil;
-
actualizarea datelor este groaie şi consumatoare de resurse calculator;
-
nivelul logic nu este separat clar de cel fizic (ex. indecşii pot fi structuri logice dar şi fizice);
-
nu se poate realiza legătura de tip M:N
6.
Exemplu de SGBD ierarhic este IMS (Information Management System) realizat de către IBM.
7.
Baza de date ierarhică = o mulţime ordonată de realizări ale unui tip arbore.
Modelul reţea
1.
Definirea structurii modelului reţea.
a)
Definirea entităţilor se face prin noţiunea de tip de înregistrare, care este formată din caracteristici (câmpuri).
Realizarea (instanţa) unui tip de înregistrare este dată de ansamblul valorilor pentru câmpurile acestuia (înregistrarea).
b)
Definirea legăturilor dintre entităţi se face fizic şi conduce la o structură de tip reţea, reprezentată sub forma unei diagrame (fig. 2.3.) numită şi schema (conceptuală).
TIP_ÎNREG 1 TIP_ÎNREG 2
TIP_ÎNREG 3 TIP_ÎNREG 4
![]() |
![]() |
TIP_ÎNREG 5 TIP_ÎNREG 6
Fig. 2.3. Diagrama de structură reţea
Caracteristici ale structurii reţea :
-
Un nod poate avea oricâţi superiori şi oricâţi subordonaţi.
-
Pot exista mai multe tip de înregistrare rădăcină.
-
La un subordonat se poate ajunge pe mai multe căi.
-
Este o extensie a structurii arborescente în care graful nu mai este limitat.
-
Legăturile în model pot fi 1:1, 1:M, M:N, ciclice.
-
Pentru exprimarea legăturilor se foloseşte conceptul de tip set. Un tip set este format dintr-un singur tip de nod proprietar şi unul sau mai multe tipuri de nod membre dependente de cel proprietar.
-
O realizare a tipului set este o colecţie de înregistrări care are o realizare proprietar şi un număr de realizări membre asociate.
Exemplu. Fie BD de personal cu entităţile (tipurile de înregistrări): CONTRACTE, COMPARTIMENT, PERSOANA, COPII.
CONTRACTE COMPARTIMENT
![]() |
![]() |
![]() |
![]() |
CODC DENC VALOARE CODCO DENCO CODSEF
![]() |
![]() |
||
PERSOANA
MARCA NUMEP ADRESA
![]() |
COPII
PRENC DATAN
În structura reţea de mai sus un tip set este: COMPARTIMENT ca nod proprietar şi PERSOANA ca nod membru.
O realizare a acestui tip set poate fi :
COMPARTIMENT 100 INFORMATICĂ 001
PERSOANA 005 POPA ANDA MOŞILOR, 22
PERSOANA 010 PETRE ION EMINESCU, 10
…………….
-
Localizarea unui tip set: se identifică o realizare a unui nod proprietar.
-
Trecerea de la oînregistrare la alta în cadrul unui set: proprietar-membru, membru-proprietar, membru-membru.
-
Actualizarea într-un set: adăugarea, modificarea, ştergerea unor membri.
-
Actualizarea într-o reţea: adăugarea, modificarea, ştergerea unor seturi.
Notă. Operaţiile de actualizare sunt groaie şi mari consumatoare de resurse calculator. Aceasta deoarece sunt antrenate întotdeauna înregistrările dintr-unul sau mai multe seturi.
-
Localizarea unei înregistrări pe baza valorii unui câmp (cheie).
3.
Restricţiile de integritate ale modelului reţea.
-
O înregistrare nu poate fi membră a două realizări ale aceluiaşi tip set. Înregistrarea se va multiplica.
-
O înregistrare poate să aparţină mai multor tipuri set prin multiplicare.
-
Un tip de înregistrare poate fi nod proprietar într-un set şi nod membru în alt set.
-
Un set poate avea un singur nod proprietar.
Notă. Efectele restricţiilor de integritate sunt:
·
dau logica şi coerenţa modelului reţea;
·
complică operaţia de actualizare;
·
introduce o redundanţă controlată.
Caracteristicile modelului reţea.
1.
A fost propus de CODASYL ca soluţie pentru a se elimina limitele modelului ierarhic.
2.
Se poate utiliza pentru domenii variate din lumea reală, deoarece permite reprezentarea unor structuri complexe.
3.
Implementarea modelului se face fizic şi condiţionează performanţele BD:
·
prin pointeri structuraţi în liste înlănţuite, de diferite tipuri (owner, prior, next);
·
prin hartă de biţi (matrice cu înregistrări iar la intersecţie sunt legăturile 1-da, 0-nu).
4.
Limitele modelului reţea:
-
complexitatea modelului îl face dificil de implementat;
-
legăturile din model nu sunt întotdeauna foarte clare;
-
prelucrarea înregistrărilor se face secvenţial;
-
actualizarea este greoaie şi consumatoare de resurse calculator;
-
reproiectarea este dificilă datorită complexităţii ridicate.
Modelul relaţional
a)
Definirea entităţilor se face sub forma unor tablouri bidimensionale numite tabele sau relaţii de date.
Conceptele utilizate sunt:
DOMENIU = un ansamblu de valori caracterizat printr-un nume.
El poate fi explicit (se enumeră valorile posibile D1:{M, F}) sau implicit (se precizează proprietăţile valorilor D1:{a/aÎN}).
TABELA/RELAŢIA = un subansamblu al produsului cartezian al mai multor domenii, caracterizat printr-un nume.
ATRIBUTUL = coloana unei tabele, caracterizată printr-un nume
TUPLUL = linia dintr-o tabelă şi nu are nume.
Notă. Ordinea liniilor (tupluri) şi coloanelor (atribute) dintr-o tabelă nu trebuie să prezinte nici-o importanţă.
SCHEMA TABELEI = numele tabelei, urmat între paranteze rotunde de lista atributelor, iar pentru fiecare atribut se precizează domeniul asociat.
CHEIA = un atribut sau un ansamblu de atribute care au rolul de a identifica un tuplu dintr-o tabelă.
Tipuri de chei: primare/alternate, simple/comune, externe.
SCHEMA RELAŢIONALĂ = schema tabelei + cheile + restricţiile de integritate.
Exemplu. Fie tabela STUDENT cu atributele: NUME din domeniul D1 (numele de persoane), ANSTUDIU din domeniul (anii de studiu dintr-o facultate), ANNAŞTERE (anii calendaristici).
STUDENT
NUME: D1 |
ANSTUDIU : D2 |
ANNAŞTERE: D3 |
POPA A. |
2 |
1980 |
PETRE M. |
2 |
1980 |
ILIE C. |
3 |
1979 |
tuplu
Schema tabelei : STUDENT(NUME: D1, ANSTUDIU: D2, ANNAŞTERE: D3)
Notă. Numărul de domenii este mai mic sau egal cu numărul de atribute pentru o tabelă (mai multe atribute pot lua valori din acelaşi domeniu).
b)
Definirea legăturilor dintre entităţise face logic construind asocieri între tabele cu ajutorul unor atribute de legătură.
Legăturile se pot reprezenta sub forma unei diagrame de structură (fig. 2.4.) numită şi schema BD.
Exemlu. Fie o BD privind desfacerea în care am identifivat tabelele: BENI, CONTR, PROD. Legăturile dintre tabele sunt:
-
un beneficiar poate încheia mai multe contracte (1:M);
-
un produs se poate livra prin mai multe contracte (1:M);
-
un beneficiar poate cumpăra mai multe produse şi un produs se poate livra către mai mulţi beneficiari (M:N).
![]() |
![]() |
![]() |
BENI CODB DENB LOCB CTBC
1:M
![]() |
![]() |
![]() |
![]() |
CONTR CODB CODP CANTL PRETL TERMENL
1:M
PROD CODP DENP UMP
Fig. 2.4. Schema BD
Notă. Legătura M:N nu apare direct în schemă.
Atributele subliniate sunt chei.
Caracteristici ale structurii relaţionale:
-
Atributele implicate în realizarea legăturilor se găsesc fie în tabelele asociate, fie în tabele distincte construite special pentru legături.
-
Atributul din tabela iniţială se numeşte cheie externă iar cel din tabela finală cheie primară.
-
Legăturile posibile sunt 1:1, 1:M, M:N.
-
Potenţial, orice tabelă se poate lega cu orice tabelă, după orice atribute.
-
Legăturile se stabilesc la momentul descrierii datelor (prin LDD) cu ajutorul restricţiilor de integritate.
Practic se stabilesc şi legături dinamice la momentul execuţiei.
a)
Operatori din algebra relaţională:
·
standard: selecţia proiecţia, joncţiunea, reuniunea, diferenţa, produsul cartezian, intersecţia, diviziunea;
·
extensii : complementarea, descompunerea (splitarea) etc.
Notă. Operatorii algebrei relaţionale acţionează la nivel de tabelă în expresii relaţionale. Operanzii sunt tabele iar rezultatul este întotdeauna o tabelă.
b)
Operatorii din calculul relaţional:
·
orientaţi pe tuplu: conectivele (conjuncţia Ù, disjuncţia Ú, negaţia ù ), cuantificatorii (existenţa $, universal ");
·
orientaţi pe domeniu: idem ca mai sus.
Notă. Pentru operatorii calcului relaţional operandul poate fi tuplu sau domeniu.
a)
Structurale = se definesc prin compararea unor valori din tabele:
-
cheie unică = într-o tabelă nu trebuie să existe mai multe tupluri cu aceeaşi valoare pentru ansamblul cheie;
-
referenţială = într-o tabelă T1 care referă o tabelă T2, valorile cheii externe trebuie să figureze printre valorile cheii primare din T2 sau să ia valoarea NULL (neprecizat);
-
entităţii = într-o tabelă, atributele din cheia primară nu trebuie să ia valoarea NULL.
Notă. Cele trei restricţii de mai sus sunt minimale.
Pe lângă acestea, există o serie de alte restricţii structurale care se referă la dependenţele dintre date: funcţionale, multivaloare, joncţiune etc. (sunt luate în considerare la tehnicile de proiectare BDR).
b)
Semantice = se definesc prin comportamentul datelor şi ţin cont de valorile din BD:
-
restricţia de domeniu = domeniul corespunzător unui atribut dintr-o tabelă trebuie să se încadreze între anumite valori;
-
restricţii temporare = valorile anumitor atribute se compară cu nişte valori temporare (rezultate din calcule etc.).
Notă. Restricţiile semantice fiind foarte generale se gestionează fie la momentul descrierii datelor (ex. clauza CHECK), fie în afara modelului la momentul execuţiei (ex. instrucţiunea IF) .
Caracteristicile modelului relaţional:
1.
A fost propus de către IBM şi a revoluţionat reprezentarea datelor în BD făcând trecerea la o nouă generaţie.
2.
Modelul este simplu, are o solidă fundamentare teoretică fiind bazat pe teoria seturilor (ansamblurilor) şi pe logica matematică.
3.
Pot fi reprezentate toate tipurile de structuri de date de mare complexitate, din diferite domenii de activitate.
4.
Implementarea modelului se face logic prin atribute având rol de chei.
5.
Limitele modelului relaţional:
-
prea mare simplitate a modelului îl face dificil de aplicat pentru noile tipuri de aplicaţii (multimedia, internet etc.);
-
nu asigură o independenţă logică totală a datelor de aplicaţie;
-
pentru aplicaţii de volum şi complexitate foarte mari nu mai face faţă;
-
poate introduce o redundanţă prea mare (la proiectare prin tehnica de normalizare).
6.
Baza de date relaţională = un ansamblu de tabele prin care se reprezintă atât datele cât şi legăturile dintre ele.
a)
Definirea obiectelor se face cu ajutorul conceptului de clasă de obiecte care este definită din entitatea regăsită în lumea reală. Se pune accentulatât pe date cât şi pe comportamentul acestora, ambele încapsurate în obiect.
Conceptele utilizate sunt:
CLASELE (TIPURILE) DE OBIECTE = un tip abstract de date prin care se defineşte structura obiectelor (proprietăţile) şi comportamentul (metodele) acestora.
OBIECTELE = o colecţie de proprietăţi care se referă la aceeaşi entitate.
Obiectul are:
-
un nume prin care este referit ;
-
un identificator unic atribuit de sistem;
-
o implementare care este privată;
-
o interfaţă care este publică.
METODA = operaţiile permise asupra obiectului, deci comportamentul (funcţionalitatea) acestuia.
MESAJUL = cereri adresate obiectelor pentru a returna o valoare sau o stare.
CARACTERISTICI (principii) fundamentale ale obiectelor:
-
încapsurarea = descrierea obiectelor se face astfel încât nu se poate avea acces din afara obiectului la datele sale;
-
polimorfismul = diferite obiecte pot răspunde diferit la aceleaşi mesaje;
-
moştenirea = capacitatea unui obiect de a-şi deriva datele şi funcţionalitatea din alt obiect.
INSTANŢA unei clase = realizarea unei clase dată de valorile variabilelor aferente.
b)
Definirea legăturilor între obiecte se realizează implicit prin modul de construire (definire) al obiectelor.
Tipurile de legături în modelul OO sunt:
-
Ierarhice, caracterizate prin:
·
clasa de obiecte este structura de bază a modelului;
·
fiecare obiect are un identificator unic;
·
toate obiectele sunt membri ai unei clase;
·
clasele sunt structurate în ierarhii având caracteristica de moştenire;
·
prin obiecte se pot defini orice tip de date (text, grafic, imagine, sunet, video etc.);
·
ansamblul claselor de obiecte structurate în ierarhii alcătuiesc schema BD.
-
de referinţă caracterizate prin:
·
se realizează pe baza identificatorului unic obiect;
·
pot fi de următoarele feluri:
§
simple de asociere = referirea unui obiect de către alt obiect;
§
de compunere (tip parte-întreg) = obiectele care reprezintă componente ale unui întreg sunt asociate cu obiectul ce reprezintă întregul;
§
de agregare = obiectele independente sunt agregate succesiv pentru a forma un întreg.
·
permit definirea şi manipularea de obiecte compuse din alte obiecte. Obiectele compuse rezultate au o structură ierarhică dar nu au caracteristică de moştenire.
-
La baza operaţiilor din model stau mesajele ca unic mod de a comunica obiectele între ele.
-
Actualizarea metodelor (adaugare, modificare, ştergere de metode).
-
Actualizarea proprietăţilor (adaugare, modificare, ştergere de date).
-
Actualizarea claselor (adaugare, modificare, ştergere de clase).
-
Realizarea legăturilor între clase (compunere, partiţionare etc.).
-
Actualizarea instanţelor, prin metode care schimbă starea internă a obiectului.
-
Orice obiect trebuie să respecte restricţiile impuse la definirea clasei din care face parte (protocol de obiect).
-
Identificatorul obiectului asigură integritatea referirii la el (se atribuie şi se şterge automat o dată cu obiectul).
-
Accesul la obiecte este limitat la folosirea protocolului de mesaje definit pentru clasa din care face parte obiectul.
Caracteristicile modelului OO
-
nu există un model OO unanim acceptat de specialişti. Există totuşi organisme internaţionale de standardizare – exemplu OMG (Object Management Group) – precum şi modele OO standardizate – ODMG (Object Data Management Group);
-
imaturitatea şi naturaleţea dezarmantă a tehnologiei OO;
-
elemente încă insuficient testate pentru SBDOO: controlul integrităţii, volume foarte mari, regăsirea etc.
Notă. 1) O comparaţie între modelul relaţional şi orientat obiect vezi în Anexa 1.
2) Baza de date = un ansamblu de colecţii de date:
·
organizat (pe niveluri de organizare a datelor);
·
coerent (restricţii de integritate şi legăturile dintre date);
·
structurat (conform unui model de date);
·
are o redundanţă minimă şi controlată (modelul de date şi tehnicile de proiectare);
·
accesul mai multor utilizatori în timp util.
2.4. Protecţia BD
Protecţia BD = un ansamblu de măsuri necesare asigurării securităţii şi integrităţii datelor.
Securitatea datelor = interzicerea accesului la date pentru utilizatorii neautorizaţi.
Integritatea datelor = corectitudinea datelor încărcate şi manipularea lor astfel încât să se respecte restricţiile de integritate ale modelului de date implementat.
Salvarea = stocarea datelor în copii de siguranţă prin tehnici specifice (copiere, jurnalizare).
Restaurarea = refacerea consistenţei BD, pornind de la datele salvate, minimizând prelucrările pierdute (automat/manual).
CAPITOLUL 3 BAZE DE DATE RELAŢIONALE (BDR)
3.1. Conceptul de BDR
3.2. Proiectarea BDR prin tehnica normalizării
3.3. Algebra şi Calculul relaţional
3.1. Conceptul de BDR
BDR utilizează modelul de date relaţional şi noţiunile aferente.
BDR au o solidă fundamentare teoretică, în special prin cercetările de la IBM conduse de E.F.CODD.
BDR = un ansamblu organizat de tabele (relaţii) împreună cu legăturile dintre ele.
Avantaje BDR faţă de fişiere (câteva):
-
asigură independenţa logică şi fizică a datelor;
-
structurează datele pe trei niveluri: conceptual, logic şi fizic;
-
se simplifică reprezentarea şi utilizarea datelor (prin model);
-
se asigură deschidere şi portabilitate aplicaţiilor;
-
structura de date se păstrează în dicţionarul BD şi nu în programe.
fişiere fişier înregistrare câmp valori
Organizare date în
BDR tabelă tuplu atribut domeniu de valori
(relaţie) (linie) (coloană)
Condiţii minimale ca un SGBD să fie relaţional:
-
să implementeze modelul de date relaţionale prin LDD şi LMD;
-
să implementeze cel puţin un limbaj relaţional prin LMD.
Notă. Condiţiile complete ca un SGBD să fie relaţional sunt date de cele 13 reguli ale lui CODD.
3.2. Proiectarea BDR prin tehnica normalizării
a)
Noţiuni
Aspectul dinamic al structurii de date este avut în vedere şi rezolvat de BDR.
Tehnica de normalizare este utilizată în activitatea de proiectare a structurii BDR şi constă în eliminarea unor anomalii (neajunsuri) de actualizare din structură.
Anomaliile de actualizare sunt situaţii nedorite care pot fi generate de anumite tabele în procesul proiectării lor:
·
anomalia de ştergere = stergând un tuplu dintr-o tabelă, pe lângă informaţiile care şterse, se pierd şi informaţiile utile existente în tuplul respectiv;
·
anomaliile de adăugare = nu pot fi incluse noi informaţii necesare într-o tabelă deoarece nu se cunosc şi alte informaţii utile (de exeplu valorile pentru cheie);
·
anomalia de modificare = este dificil de modificat o valoare a unui atribut atunci când ea apare în mai multe tupluri.
Notă. Anomaliile de actualizare sunt rezolvate de către teoria relaţională, lucru care nu se întâmplă la alte tipuri de BD.
Normalizarea = teoria construită în jurul conceptului de forme normale (FN), care ameliorează structura BD prin înlăturarea treptată a unor neajunsuri şi prin imprimarea unor facilităţi sporite privind manipularea datelor.
Notă. Teoria normalizării a fost concepută iniţial de către E.F.CODD, ulterior aducându-şi contribuţia şi alţi cercetători.
Normalizarea utilizează ca metodă descompunerea (top-down) unei tabele în două sau mai multe tabele, păstrând informaţii (atribute) de legătură.
b)
Forme normale
O tabelă (relaţie) este într-o formă normală (FN) dacă satisface anumite restricţii, care arată că FN(i+1) faţă de FN(i), i=1,4.
Sunt cinci forme normale (FN1 la FN5) şi una suplimentară (BCNF) care revizuieşte FN3.
O bază de date este FNi , i=1,5 dacă toate tabelele sale sunt în FNi.
BD iniţială va fi formată dintr-o singură colecţie de date care apoi se descompune (prin proiecţie) în mai multe tabele, parcurgând formele normale.
FN1
O tabelă este în FN1 dacă toate atributele ei conţin valori elementare (nedecompozabile), fiecare tuplu tuplu nu trebuie să aibă date la nivel de grup sau repetitiv.
Structurile de tip arborescent şi reţea se transformă în tabele cu atribute elemntare.
O tabelă în FN1 prezintă încă o serie de anomalii de actualizare datorită eventualelor dependenţe funcţionale incomplete.
Fiecare structură repetitivă generează (prin descompunere) o nouă tabelă, iar atributele la nivel de grup se înlătură, rămânând cele elemntare.
FN2
O tabelă este în FN2 dacă şi numai dacă este în FN1 şi fiecare atribut noncheie al tabelei este dependent funcţional complet de cheie.
Un atribut B al unei tabele depinde funcţional de atributul A al aceleiaşi tabele dacă fiecărei valori ale lui A îi corespunde o singură valoare a lui B care îi este asociată în tabelă.
Un atribut B este dependent funcţional complet de un ansamblu de atribute A în cadrul aceleiaşi tabele, dacă B este dependent funcţional de întreg ansamblul A (nu numai de un atribut din ansamblu).
O tabelă în FN2 prezintă încă o serie de anomalii de actualizare, datorită eventualelor dependenţe tranzitive.
Eliminarea dependenţelor incomplete se face prin descompunerea tabelei iniţiale în două tabele, ambele conţinând atributul intermediar (B).
FN3
O tabelă este în FN3 dacă şi numai dacă este în FN2 şi fiecare atribut noncheie depinde în mod netranzitiv de cheia tabelei.
Într-o tabelă T, fie A,B,C trei atribute cu A cheie. Dacă B depinde de A (A B) şi C depinde de B (B C) atunci C depinde de A în mod tranzitiv.
Eliminarea dependenţelor tranzitive se face prin descompunerea tabelei iniţiale în două tabele, ambele conţinând atributul intermediar (B).
O tabelă în FN3 prezintă încă o serie de anomalii de actualizare, datorate eventualelor dependenţe multivaloare.
Notă. O definiţie mai riguruasă pentru FN3 a fost dată prin BCNF (Bozce Codd Normal Form): o tabelă este în BCNF dacă fiecare determinant este un candidat cheie.
Determinantul este un atribut elementar sau compus faţă de care alte atribute sunt complet dependente funcţional.
FN4
O tabelă este în FN4 dacă şi numai dacă este în FN3 şi nu conţine două sau mai multe dependenţe multivaloare.
Într-o tabelă T, fie A,B,C trei atribute. În tabela T se menţine dependenţa multivaloare A () dacă şi numai dacă mulţimea valorilor lui B ce corespunde unei perechi de date (A,C), depinde numai de o valoare a lui A şi este independentă de valorile lui C.
FN5
O tabelă este în FN5 dacă şi numai dacă este în FN4 şi fiecare dependenţă joncţiune este generată printr-un candidat cheie al tabelei.
În tabela T (A,B,C) se menţine dependenţa joncţiune (AB,AC) dacă şi numai dacă T menţine dependenţa multivaloare A b sau C.
Notă. Dependenţa multivaloare este caz particular al dependenţei joncţiune.
Dependenţa funcţională este caz particular al dependenţei multivaloare.
3.3. Algebra şi Calculul relaţionale
Pentru manipularea datelor conform modelului relaţional se folosesc operatorii din algebra şi calculul relaţional.
Pentru implementarea acestor operatori există comenzi specifice în LMD din SGBDR. Aceste comenzi sunt utilizate în operaţii de regăsire (interogare).
După tehnica folosită la manipulare, LMD sunt bazate pe:
-
calculul relaţional (QUEL în Ingres, ALPHA propus de Codd);
-
algebra relaţională (ISBL, RDMS);
-
transformarea (SQL, SQUARE);
-
grafică (QBE, QBF).
Calculul relaţional
Calculul relaţional se bazează pe calculul predicatelor de ordinul întâi (domeniu al logicii) şi a fost propus de E.F.CODD.
Predicatul este o relaţie care se stabileşte între anumite elemente şi care poate fi confirmată sau nu.
Predicatul de ordinul 1 este o relaţie care are drept argumente variabile care nu sunt predicate.
Variabila poate fi de tip tuplu (valorile sunt dintr-un tuplu al unei tabele) sau domeniu (valorile sunt dintr-un domeniu al unei tabele).
Cuantificatorii (operatorii) utilizaţi în calculul relaţional sunt: universal (") şi existenţial ($).
Construcţia de bază în calculul relaţional este expresia relaţională de calcul tuplu sau domeniu (funcţie de tipul variabilei utilizate).
Expresia relaţională de calcul este formată din:
-
operaţia de efectuat;
-
variabile (tuplu respectiv domeniu);
-
condiţii (de comparaţie, de existenţă);
-
formule bine definite (operanzi-constante, variabile, funcţii, predicate; operatori);
-
cuantificatori.
Algebra relaţională
Algebra relaţională este o colecţie de operaţii formale aplicate asupra tabelelor (relaţiilor), concepută de E.F.CODD.
Operaţiile sunt aplicate în expresiile algebrice relaţionale care sunt cereri de regăsire.
Acestea sunt compuse din operatorii relaţionali şi operanzi.
Operanzii sunt întotdeauna tabele (una sau mai multe).
Rezultatul evaluării unei expresii relaţionale este format dintr-o singură tabelă.
Algebra relaţională are cel puţin puterea de regăsire a calcului relaţional. O expresie din calculul relaţional se poate transforma într-una echivalentă din algebra relaţională şi invers.
Operatorii din algebra relaţională pot fi grupaţi în două categorii (R1, R2, R3 sunt relaţii (tabele)):
1.
Operatori pe mulţimi
REUNIUNEA: R3=R1ÈR2, unde R3 va conţine tupluri din R1 sau R2 luate o singură dată.
DIFERENŢA: R3=R1\R2, unde R3 va conţine tupluri din R1 care nu se regăsesc în R2
PRODUSUL CARTEZIAN: R3=R1´R2, unde R3 va conţine tupluri construite din perechi (x1x2) cu x1ÎR1 şi x2ÎR2.
INTERSECŢIA:R3=R1ÇR2, unde R3 va conţine tupluri care se găsesc în R1 şi R2 în acelaşi timp.
2.
Operatori relaţionali speciali
SELECŢIA: din R1 se obţine o subtabelă R2, care va conţine o submulţime din tuplurile iniţiale din R1 ce satisfac un predicat (o condiţie).
Numărul de atribute din R2=numărul de atribute din R1
Numărul de tupluri din R2;numărul de tupluri din R1.
PROIECŢIA: din R1 se obţine o subtabelă R2, care va conţine o submulţime din atributele iniţiale din R1 şi fără tupluri duplicate
Numărul de atribute din R2<numărul de atribute din R1
Numărul de tupluri din R2£numărul de tupluri din R1.
JONCŢIUNEA: derivaţie a produsului cartezian, ce presupune utilizarea unui calificator care să permită compararea valorilor unor atribute din R1 şi R2, iar rezultatul în R3.
R1 şi R2 trebuie să aibă unul sau mai multe atribute comune care au valori comune.
Note.
1)
Codd a introdus şase operatori de bază (reuniunea, diferenţa, produsul cartezian, selecţia, proiecţia , joncţiunea) şi doi operatori derivaţi (intersecţia şi diviziunea).
2)
Ulterior au fost introduşi şi alţi operatori derivaţi (speciali).
3)
Algebra relaţională este prin definiţie neprocedurală (descriptivă), iar calculul relaţional permite o manieră de căutare mixtă (procedurală/neprocedurală).
Transformarea
Oferă o putere de regăsire echivalentă cu cea din calculul şi algebra relaţională.
Se bazează pe transformarea (mapping) unui atribut sau grup de atribute într-un atribut dorit prin intermediul unor relaţii.
Rezultatul este o relaţie (tabelă) care se poate utiliza într-o altă transformare.
Grafica
Oferă interactivitate mare pentru constrirea cererilor de regăsire.
Utilizatorul specifică cerea alegând sau completând un ecran structurat grafic.
Poate fi folosit de către toate categoriile de utilizatori în informatică.
Capitolul 4 VISUAL FOXPRO
4.1. Aspecte generale
Visual PoxPro (VFP) este un SGBD relaţional care deţine un limbaj procedural propriu foarte puternic. Acest limbaj conţine comenzi şi funcţii care permit:
-
descrierea şi manipularea datelor într-o bază de date relaţională;
-
dezvoltarea procedurală a programelor de aplicaţie;
-
programarea neprocedurală printr-un nucleu extins de SQL pe care-l suportă;
-
programarea orientată pe obiecte prin facilităţile vizuale.
Visual FoxPro este realizat de firma Microsoft – SUA şi a ajuns la versiunea 7.
O parte dintre comenzile şi funcţiile din limbajul din Visual FoxPro vor fi prezentate în continuare, grupate după criteriul funcţional.
Limbajul conţine puţine reguli de sintaxă:
·
nu există comenzi de început/sfârşit de program, iar programul nu este
structurat pe secţiuni;
·
o comandă se poate scrie din orice coloană, singură pe o linie;
·
o comandă se poate continua pe linia următoare, utilizând caracterul punct şi virgulă (;) la sfârşitul liniei de continuat;
·
delimitator este spaţiul (unul sau mai multe);
·
din numele unei comenzi, primele patru litere sunt obligatorii;
·
procedurile sunt de tip PROCEDURE sau FUNCTION şi pot apărea în orice ordine, în acelaşi fişier cu programul apelant sau în fişier separat.
Expresiile folosite în Visual FoxPro depind de natura operatorilor care apar: aritmetici (+, -, *, /, **), logici (AND, OR, NOT), de comparaţie (<, >, <=, >=, <>, #, =), şiruri de caractere (+, -, $).
Comentariul se introduce prin comanda NOTE sau caracterul * scris primul pe o linie de program, începând cu orice coloană sau două caractere && pe o linie, după o comandă.
Reprezentarea datelor în memoria internă se face prin variabile simple (definite şi declarate când apar într-o comandă de atribuire), tablouri cu maxim două dimensiuni (declarate prin comanda DIMENSION sau DECLARE), constante (numerice, nenumerice, logice), clase de obiecte.
Reprezentarea datelor în memoria externă se face prin tabele relaţionale create de utilizator sau rezultate din aplicarea operaţiilor relaţionale.
Încărcarea/actualizarea unui program se face cu editorul de texte Visual FoxPro apelat cu MODIFY COMMAND (sau cu orice alt editor de texte care produce fişier ASCII).
Execuţia unui program se face prin comanda DO care generează fişierul obiect tip FXP. Pentru generarea fişierului executabil (EXE) şi apelul programului de sub sistemul de operare, fără a fi nevoie de produsul VFP, trebuie să se utilizeze componenta de RUNTIME (cu opţiunea STANDALONE) din Visual FoxPro.
Pentru informaţii privind toate comenzile şi funcţiile Visual FoxPro, precum şi sintaxa, semantica şi exemple referitoare la ele se va folosi comanda HELP.
Contextul curent de lucru în Visual FoxPro este dat de: calea (zona) de lucru curentă (ultima activată printr-o comandă SELECT), tabela curentă (ultima deschisă pe o cale prin comanda USE), înregistrarea curentă (ultima accesată într-o tabelă).
4.2. Descrierea datelor
Prezentăm acele comenzi din limbajul din Visual FoxPro care se folosesc pentru descrierea şi definirea datelor (LDD - limbajul de descriere a datelor). Acestea, sunt comenzi cu un înalt grad de automatizare, uşor de utilizat:
CREATE – crează structura de date a unei tabele. Rezultă un fişier tip DBF(DataBase File), în care se stochează structura şi apoi datele. Se lucrează într-o fereastră specifică.
CREATE TABLE – este o comandă din SQL cu aproximativ acelaşi efect ca
comanda CREATE. Se lucrează însă prin linii de comandă şi
permite în plus specificarea restricţiilor de integritate din modelul
relaţional, la momentul descrierii datelor.
CREATE DATABASE – crează o bază de date, care va conţine mai multe tabele. Se
poate astfel lucra explicit cu noţiunea de bază de date. Rezultă un fişier tip DBC (DataBse Container).
MODIFY STRUCTURE – actualizează structura de date a unei tabele prin operaţii de:
adăugare, modificare, ştergere de câmpuri.
ALTER TABLE – este o comandă din SQL cu aproximativ acelaşi efect cu MODI
STRU. Se lucrează însă prin linii de comandă.
LIST/DISP STRUCTURE – afişează structura de date a unei tabele.
DBF () – furnizează numele tabelei deschise pe calea curentă.
4.3. Manipularea datelor
Principalel operaţii de manipulare implementate în LMD (Limbajul de Manipulare a Datelor) sunt: accesul la date, actualizarea datelor, tehnicile de programare.
Pentru accesul la date, care este una dintre operaţiile cele mai utilizate ale unui SGBD, vom grupa comenzile pe tipurile de acces suportate de Visual FoxPro.
Pregătirea accesului
USE – deschide o tabelă, pregătită pentru orice tip de acces.
OPEN DATABASE – deschide o bază de date
CLOSE – închide tabele şi alte fişiere Visual FoxPro, conform opţiunilor specificate.
SELECT – activează o cale (zonă) de lucru. Acestea sunt notate cu 1,2,… sau cu A,
B,… Pe o cale, la un moment dat, poate fi deschisă o singură tabelă.
INDEX – indexează o tabelă după o singură cheie –fişier tip IDX (simplă - formată din unul sau multe câmpuri) sau după mai multe chei – fişier tip CDX (multiindexată). Rolul indexării este de a permite ordonarea datelor şi accesul direct la date.
REINDEX – reindexează o tabelă după un criteriu stabilit la o indexare anterioară.
SET INDEX TO – activează unul din fişierele de index tip IDX, create anterior.
SPACE () – generează un şir de spaţii.
Accesul tip secvenţial
tabelei.
CONTINUE – reia execuţia ultimei comenzi LOCATE anterioare, căutarea începând
de la înregistrarea curentă.
GO [TO] – poziţionează pointerul de înregistrare, pe înregistrarea cu numărul de
ordine (realizare) specificat. Într-o tabelă, înregistrările sunt numerotate automat, de către sistem, de la 1 (TOP) la câte sunt (BOTTOM).
SKIP – deplasează pointerul de înregistrare, începând de la înregistrarea curentă, cu
un număr de înregistrări spre stânga (BOF) sau spre dreapta (EOF).
SEEK – caută direct prima înregistrare dintr-o tabelă care are valoarea cheii de
indexare egală cu o valoare specificată în comandă (printr-o expresie de orice tip).
FIND – la fel ca SEEK dar valoarea se poate specifica doar printr-o expresie tip
caracter. Dacă referirea se face printr-o variabilă, aceasta este precedată de
caracterul & (metadefiniţie – referire indirectă).
LIST – afişează înregistrări dintr-o tabelă, conform unor criterii specificate. LIST simplu, afişează toate tuplurile din tabela curentă.
DISPLAY – la fel ca LIST dar, la afişarea pe ecran, când acesta este umplut se opreşte defilarea automat. Reluarea se face apăsând orice tastă. DISP simplu, afişează tuplul curent din tabela curentă.
STR () – transformă o valoare numerică într-un şir de caractere.
VAL () – transformă un şir de caractere într-o valoare numerică.
SUBSTR () – extrage dintr-un şir dat un număr de caractere.
RECCOUNT () – furnizează numărul de înregistrări dintr-o tabelă.
RECNO () – furnizează numărul de ordine (realizare) al înregistrării curente.
BOF () – începutul de fişier.
EOF () – sfârşitul de fişier.
FOUND () – indică dacă în urma unui acces a fost găsită sau nu o înregistrare.
LOWER () – transformă literele mari în litere mici.
UPPER () – transformă literele mici în litere mari.
CHR () – furnizează caracterul al cărui cod ASCII este indicat.
Actualizarea presupune realizarea celor trei operaţii: adăugare, modificare, ştergere asupra înregistrărilor dintr-o tabelă.
APPEND – adaugă înregistrări la sfârşitul tabelei curente (ordinea înregistrărilor
într-o tabelă nu contează). Se lucrează într-o fereastră specifică.
INSERT SQL – comandă din SQL. Adaugă la sfârşitul tabelei o înregistrare indicată
prin comandă.
REPLACE – modifică înregistrări existente dintr-o tabelă.
DELETE – şterge logic (marchează prin caracterul *) înregistrări dintr-o tabelă.
RECALL – reface înregistrări şterse logic anterior.
PACK – şterge fizic toate înregistrările şterse logic anterior.
ZAP – şterge fizic toate înregistrările dintr-o tabelă.
DELETED () – specifică dacă înregistrarea curentă este ştearsă logic.
SET DELETED – specifică dacă înregistrările şterse logic sunt disponibile sau nu
pentru alte comenzi.
Limbajel din VFP implementează atât tehnicile de programare structurată (structurile fundamentale, modularizarea etc.) cât şi programarea orientată obiect.
. Structurile fundamentale de program
În Visual FoxPro există comenzi specifice care permit implementarea celor trei structuri fundamentale de program din programarea structurată (procedurală): secvenţială, alternativă, repetitivă.
Structura secvenţială
STOREü
= ý - comenzi de atribuire
þ
? – scrie o linie pe ecran şi trece cursorul pe linia următoare.
?? – scrie pe linia curentă.
@ … SAY / GET – scrie /citeşte date pe/de la o coordonată a ecranului (comanda de
intrare/ieşire standard)
READ – finalizează o comandă de citire @ … GET.
WAIT – suspendă execuţia cu posibilitatea de reluare.
Notă. Toate comenzile care nu fac parte din structurile alternative şi repetitive, fac parte din structura secvenţială.
Structura alternativă
IF … ENDIF – structura alternativă simplă (cu două ramuri).
CASE … ENDCASE – structura alternativă multiplă (mai mult de două ramuri).
Structura repetitivă
DO WHILE … ENDDO – structură repetitivă cu text iniţial.
FOR … ENDFOR – structură repetitivă cu text iniţial cu numărător.
SCAN … ENDSCAN – structură repetitivă specifică care permite accesarea automată
a tuturor înregistrărilor dintr-o tabelă.
Modularizarea
PROCEDURE … RETURN – permite construirea unei subrutine tip procedură.
FUNCTION … RETURN – permite construirea unei subrutine tip funcţie utilizator.
SET PROCEDURE TO – deschide un fişier de procedurispecificat.
Meniuri
@ … PROMPT – defineşte opţiunile dintr-un meniu programat (cu bară de selecţie
– cu prompter).
MENU TO – numărul opţiunii selectate dintr-un meniu programat (cu bară de selecţie
– cu prompter) este stocat într-o variabilă.
DEFINE MENU – defineşte un meniu orizontal prin comenzi specifice.
DEFINE PAD – defineşte opţiunile dintr-un meniu orizontal prin comenzi specifice.
ACTIVATE MENU – activează un meniu orizontal prin comenzi specifice (duce
cursorul pe meniu).
DEACTIVATE MENU – eliberează cursorul de pe un meniu orizontal.
SHOW MENU – vizualizează pe ecran un meniu orizontal.
PAD () – funcţie alfanumerică ce conţine numele opţiunii selectate dintr-un meniu
orizontal prin comenzi specifice.
DEFINE POPUP – defineşte un meniu vertical prin comenzi specifice.
DEFINE BAR – defineşte opţiunile dintr-un meniu vertical prin comenzi specifice.
ACTIVATE POPUP – activează un meniu vertical (duce cursorul pe meniu).
DEACTIVATE POPUP – eliberează cursorul de pe meniul vertical.
SHOW POPUP – vizualizează pe ecran un meniu vertical.
BAR () – funcţie numerică ce conţine numărul de ordine al opţiunii selectate dintr-un
meniu vertical.
ON SELECTION – testează dacă se lucrează pe un meniu orizontal (MENU), pe
opţiunile acestuia (PAD), pe un meniu vertical (POPUP), pe opţiunile acestuia (BAR).
RELEASE – şterge din memorie meniuri sau opţiuni.
Ferestre
DEFINE WINDOW – defineşte o fereastră în anumite condiţii indicate prin clauze.
ACTIVATE WINDOW – activează o fereastră (cursorul e activ în fereastră).
DEACTIVATE WINDOW – eliberează cursorul din fereastră.
SHOW WINDOW – vizualizează o fereastră.
RELEASE WINDOW – şterge din memorie o fereastră.
Rapoarte
SET RELATION – stabileşte o legătură între două sau mai multe tabele deschise pe
căi diferite.
COPY TO – implementează operatorul relaţional de proiecţie.
SELECT SQL – comandă din SQL care permite formularea cererilor de regăsire
complexe. Implementează şi operatorii relaţional de baz㪠selecţia, proiecţia,
joncţiunea, uniunea, diferenţa, intersecţia.
JOIN – implementează operatorul relaţional de joncţiune.
BROWSE – comandă complexă ce permite pentru o tabelă: vizualizare, răsfoire,
actualizare, etc.
CHANGE – idem ca BROWSE dar aranjarea câmpurilor se face, pe ecran, invers (pe
verticală).
SUM – însumează câmpurile specificate dintr-o tabelă.
Notă. Toate comenzile de citire/scriere contribuie la construirea rapoartelor, alături de multe altele (agregare, setări, etc.).
Setări
Visual FoxPro conţine un număr important de comenzi SET care permit programatorului să modifice anumiţi parametri stabiliţi la instalarea sistemului. Prezentăm câteva dintre aceste comenzi:
SET ALTERNATE – direcţionează ieşirile standard realizate prin comanda ? spre un
fişier text.
SET COLOR – controlează culorile utilizate sub Visual FoxPro.
SET CONSOLE – controlează ieşirile standard spre ecran.
SET DATE – controlează formatul de afişare al datei calendaristice.
SET DEVICE – direcţionează ieşirile standard realizate prin comenzi @ … SAY spre
un periferic dorit.
SET MESSAGE – direcţionează mesajele care vor fi afişate prin clauze specifice din
diferite comenzi.
SET SAFETY – protejează fişierele la suprascriere.
SET STATUS – controlează afişarea unei linii de stare în partea inferioară a
ecranului.
SET TALK – controlează afişarea unor mesaje pe ecran la execuţia unor anumite
comenzi
Alte comenzi/funcţii
AVERAGE – calculează media aritmetică.
BOF () – tastează începutul de fişier pentru o tabelă.
CALCULATE – execută expresii aritmetice.
CLEAR – şterge tot ecranul.
COUNT – numără înregistrările dintr-o tabelă ce îndeplinesc o anumită condiţie.
CTOD () – converteşte şir de caractere în dată calendaristică.
DATE () – furnizează data curentă din sistem.
DIMENSION () – declară un tablou cu maxim două dimensiuni (idem DECLARE).
DO – apelează pentru executive un program sau procedură.
DTOC – converteşte data calendaristică în şir de caractere.
EOF () – tastează sfârşitul de fişier pentru o tabelă.
FILE () – tastează existenţa unui fişier.
HELP – furnizează informaţii despre comenzi/funcţii.
MODIFY COMMAND – apelează editorul de texte Visual FoxPro.
4.4. VFP obiectual
Începând cu versiunile de Visual, FoxPro tratează obiecte în memoria internă şi le salvează în biblioteci. Facilităţile se referă la programarea vizuală (un caz particular de programare orientată obiect) destinată construirii unor interfeţe cu utilizatorul în mod rapid, eficient şi prietenos. Prezentăm, în continuare, câteva dintre comenzile şi funcţiile sistemului.
DEFINE CLASS … ENDDEFINE – defineşte o clasă de obiecte utilizator având ca
bază (tip) una din clasele standard oferite de sistem (vizuale sau nonvizuale).
La definirea clasei se descriu proprităţile aferente.
PROCEDURE/FUNCTION – descrie metode pentru o anumită clasă, care arată
comportamentul obiectelor.
ADDOBJECT () – metodă care permite adăugarea unor obiecte la o clasă.
CREATEOBJECT () – metodă care crează un obiect pentru o clasă indicată.
CREATE CLASS – crează o nouă clasă de obiecte cu utilizatorul CLASS
DESIGNER.
CREATE CLASSLIB – crează o bibliotecă de clase vizuale utilizator (. VCX).
MODIFY CLASS – actualizează o clasă de obiecte cu utilizatorul CLASS
DESIGNER.
ADD CLASS – adaugă o clasă într-o bibliotecă de clase (. VCX).
SHOW () – metodă care afişează pe ecran un obiect de tip Form.
READ EVENTS – citeşte evenimente.
CLEAR EVENTS – şterge evenimente.
RELEASE – metodă care şterge o formă din memorie.
Notă. Sistemul VFP conţine, referitor la programarea orientată obiect, o serie de elemente standard: clase, proprietăţi, metode, evenimente. Toate acestea, alături de comenzi şi funcţii, sunt oferite programatorului spre utilizare. Informaţii suplimentare se obţin în HELP.
CAP.5 METODOLOGIA DE REALIZARE A BAZELOR DE DATE
5.1. Organizarea unei baze de date
5.2. Obiective urmărite în realizarea unei BD
5.3. Etape în realizarea unei BD
5.4. Eficienţa BD
5.1. Organizarea unei baze de date
Aspecte urmărite la organizarea unei BD:
1.
Organizarea intrărilor de date:
-
sursa datelor (documente primite, fişiere etc.)ş
-
actualizarea datelor (moduri, momente, reorganizări etc.);
-
controlul intrărilor de date (natură, conţinut, format, periodicitate etc.).
2.
Organizarea memorării datelor:
-
principii de memorare (memoria internă/externă, forma de stocare, legături între date etc.);
-
optimizarea memorării (redundanţă, spaţiu, alocare, codificare, reorganizare etc.).
3.
Organizarea protecţiei datelor:
-
instrumente oferite de către SGBD (autorizare acces, fişiere jurnal, arhivări etc.);
-
metode proprii (parole, rutine speciale, antivirus etc.).
4.
Organizarea legăturilor bazei de date cu alte aplicaţii: conversii, standarde, compatibilităţii, interfeţe etc.
5.2. Obiectivele urmărite la realizarea unei BD
1.
Partiţionarea: aceleaşi date trebuie să poată fi folosite în moduri diferite de către diferiţi utilizatori.
2.
Deschiderea: datele trebuie să fie uşor adaptabile la schimbări (actualizarea structurii, tipuri noi de date etc.).
3.
Eficienţa: stocarea şi prelucrarea datelor trebuie să se facă la costuri cât mai scăzute, care să fie inferioare beneficiilor obţinute.
4.
Reutilizarea: fondul de date existent trebuie să poată fi reutilizat în diferite aplicaţii informatice.
5.
Regăsirea: cererile de regăsire trebuie să poată fi adresate uşor de către toate categoriile de utilizatori, după diferite criterii,
6.
Accesul: datele trebuie să poată fi localizate prin diferite moduri de acces, rapid şi uşor.
7.
Modularizarea: realizarea BD trebuie să se poată face modular pentru generalitate şi posibilitatea lucrului în echipă.
8.
Protecţia: trebuie asigurate securitatea şi integritatea datelor.
9.
Redundanţa: prin implementarea unui model de date pentru baze de date şi prin utilizarea unei tehnici de proiectare a BD se asigură o redundanţă minimă şi controlată.
10.
Independenţa datelor faţă de programe la nivelurile logic şi fizic.
5.3. Etape în realizarea unei BD
În metodologia de realizare a BD se parcurg, în cea mai mare parte, cam aceleaşi etape ca la realizarea unui sistem informatic, cu o serie de aspecte specifice.
Activităţile (etapele) parcurse pentru realizarea unei BD (fig. 5.1.):
1.
Analiza de sistem
Scopul acestei activităţi este de a evidenţia cerinţele aplicaţiei şi resursele utilizate (studiul), precum şi de a evalua aceste cerinţe prin modelare (analiza).
STUDIUL situaţiei existente se realizează prin:
-
definirea caracteristicilor generale ale unităţii;
-
identificarea activităţilor desfăşurate;
-
identificarea resurselor existente (informaţionale, umane, echipamente, financiare etc.);
-
identificarea necesităţilor de prelucrare.
ANALIZA sistemului existent urmează investigării (studiului) şi utilizează informaţiile obţinute de aceasta.
Analiza este o activitate de modelare (conceptuală) şi se realizează sub trei aspecte: structural, dinamic şi funcţional.
lumea 1. ANALIZA DE SISTEM
reală studiul analiza
2. PROIECTAREA
alegerea proiectarea
SGBD fcţ. BD
![]() |
3. REALIZAREA
COMPONENTELOR LOGICE
![]() |
4. PUNEREA ÎN FUNCŢIUNE
EXPLOATAREA
![]() |
5. DEZVOLTAREA
a)
Analiza structurală evidenţiază modul de structurare a datelor şi legăturilor dintre ele. Cea mai utilizată tehnică este entitate-asociere:
1)
Identificarea entităţilor: fenomene, procese, obiecte concrete sau abstracte (substantivele din prezentarea activităţii descrise) (ex. Persoane, Produse, Beneficiari).
2)
Identificarea asocierilor dintre entităţi ca fiind legăturile semnificative de un anumit tip (verbele din prezentarea activităţii descrise).
3)
Identificarea atributelor ce caracterizează fiecare entitate în parte (ex. Marca, Nume, Adresă).
4)
Stabilirea atributelor de identificare unică a realizărilor entităţii, drept chei.
Rezultatul: modelul static (structural) (diagrama entitate-asociere)
b)
Analiza dinamică evidenţiază comportamentul elementelor sistemului la anumite evenimente. Una din tehnicile utilizate este diagrama stare-tranziţie. Aceasta presupune:
1)
Identificarea stărilor în care se pot afla componentele sistemului;
2)
Identificarea evenimentelor care determină trecerea unei componente dintr-o stare în alta;
3)
Stabilirea tranzacţiilor admise între stări;
4)
Construirea diagramei.
Rezultatul: modelul dinamic
c)
Analiza funcţională evidenţiază modul de asigurare a cerinţelor informaţionale (fluxul prelucrărilor) din cadrul sistemului, prin care intrările sunt transformate în ieşiri. Cea mai utilizată tehnică este diagrama de flux a datelor. Conform acestei tehnici se delimitează:
1)
Aria de cuprindere a sistemului.
2)
Se identifică sursele de date.
3)
Se identifică modelul de circulaţie şi prelucrare a datelor
4)
Se identifică apoi rezultatele obţinute.
Rezultatul: modelul funcţional.
Notă. Exemple vezi în cartea “Teste şi probleme…”, Petrion, 1999.
2.
Proiectarea structurii BD
Pornind de la modelele realizate prin activitatea de analiză se poate proiecta structura BD, parcurgând două subactivităţi: alegerea SGBD-ului şi proiectarea funcţiilor BD.
a)
Alegerea SBGD-ului se face ţinând cont de două aspecte: cerinţele aplicaţiei (utilizatorului) şi performanţele tehnice ale SGBD-ului.
Cerinţele aplicaţiei se referă la:
-
volumul de date estimat a fi memorate şi prelucrate în BD;
-
complexitatea problemei de rezolvat;
-
ponderea şi frecvenţa operaţiilor de intrare/ieşire;
-
condiţii privind protecşia datelor;
-
operaţii necesare pe baza de date (încărcare/validare, actualizare, regăsire etc.);
-
particularităţi ale activităţii pentru care se realizează baza de date.
Performanţele tehnice ale SGBD-ului se referă la:
-
modelul de date pe care-l implementează;
-
ponderea utilizării SGBD-ului pe piaţă şi tendinţa;
-
configuraţia de calcul minimă cerută;
-
limbajele de programare din SGBD;
-
facilităţi de utilizare oferite pentru diferite categorii de utilizatori;
-
limitele SGBD-ului;
-
optimizări realizate de SGBD;
-
facilităţi tehnice:
·
lucrul cu mediul distribuit şi concurenţa de date;
·
elemente de multimedia;
·
elemente de CASE;
·
interfeţe de comunicare;
·
autodocumentarea;
·
instrumente specifice oferite.
b)
Proiectarea funcţiilor BD se realizează prin: proiectarea schemelor BD, proiectarea modulelor funcţionale specializate.
Proiectarea schemelor BD se realizează pornind de la rezultatele modelării conceptuale (analiza de sistem) şi ţinând cont de modelul de date implementat de SGBD-ul ales.
Proiectarea schemei conceptuale porneşte de la identificarea setului de date necesar sistemului. Aceste date sunt apoi integrate şi structurate într-o schemă (ex. Pentru BDR cea mai utilizată tehnică este normalizarea. Pentru acest lucru se parcurg paşii:
·
Stabilirea schemei conceptuale iniţiale care se derivă din modelul entitate-asociere (analiza structurală). Pentru acest lucru se transformă fiecare entitate din model într-o colecţie de date (fişier), iar pentru fiecare asociere se definesc cheile aferente. Dacă rezultă colecţii izolate, acestea se vor lega de alte colecţii prin chei rezultând asocieri (1:1, 1:m, M:N).
·
Ameliorarea progresivă a schemei conceptuale prin eliminarea unor anomalii (ex. cele cinci FN).
·
Stabilirea schemei conceptuale finale trebuie să asigure un echilibru între cerinţele de actualizare şi performanţele de exploatare (ex. o FN superioară asigură performanţe de actualizare dar dă un timp de răspuns mai mare).
Proiectare schemei externe are rolul de a specifica viziunea fiecărui utilizator asupra BD. Pentru acest lucru din schema conceptuală se identifică datele necesare fiecărei viziuni. Datele obţinute se structurează logic în subscheme ţinând cont de facilităţile de utilizare şi de cerinţele utilizator. Schema externă devine operaţională prin construirea de viziuni (view) cu SGBD-ul şi acordarea drepturilor de acces. Datele într-o viziune pot proveni din una sau mai multe colecţii şi nu ocupă spaţiul fizic.
Proiectarea schemei interne presupune stabilirea structurilor de memorare fizică a datelor şi definirea căilor de acces la date. Acestea sunt specifice fie SGBD-ului (schemei de alocare), fie S.O. Proiectarea schemei interne înseamnă realizarea operaţiilor:
·
estimarea spaţiului fizic pentru BD şi definirea unui model fizic de alocare (a se vedea dacă SGBD-ul permite)
·
definirea de indecşi pentru accesul direct după cheie la date;
·
construirea de clustere care înseamnă regruparea fizică a datelor din BD, pentru a permite un acces mai rapid pentru anumiţi utilizatori. Datele pot proveni din una sau mai multe colecţii.
Proiectarea modulelor funcţionale ţine cont de concepţia generală a BD şi de schemele proiectate anterior.
Se proiectează:
-
fluxul informaţional;
-
modulele de încărcare şi manipulare a datelor;
-
interfeţele specializate;
-
integrarea elementelor proiectate cu organizarea şi funcţionarea BD.
3.
Realizarea componentelor logice
Componentele logice ale unei BD sunt programele de aplicaţie dezvoltate, în cea mai mare parte, în SGBD-ul ales.
Programele se realizează conform modulelor funcţionale proiectate în etapa anterioară.
Componentele logice ţin cont de ieşiri, intrări, prelucrări şi colecţiile de date.
În paralel cu dezvoltarea programelor de aplicaţii se întocmesc şi documentaţiile diferite (tehnică, de exploatare, de prezentare).
4.
Punerea în funcţiune şi exploatarea
Se testează funcţiile BD mai întâi cu date de test, apoi cu date reale.
Se încarcă datele în BD şi se efectuează procedurile de manipulare, de către beneficiar cu asistenţa proiectantului.
Se definitivează documentaţiile aplicaţiei.
Se intră în exploatare curentă de către beneficiar conform documentaţiiei.
5.
Dezvoltarea sistemului
Imediat după darea în exploatare a BD, în mod continuu, pot exista factori perturbatori care generează schimbări în BD.
Schimbările necesare trebuie preluate de BD uşor şi “din mers”.
Factorii pot fi: organizatorici, datoraţi progresului tehnic, rezultaţi din cerinţele noi ale beneficiarului, din schimbarea metodologiilor etc.
5.4.
Eficienţa BD
Efectele directe şi indirecte ale bazelor de date conduc spre eficienţă, mai ales pentru aplicaţiile mari şi complexe, acolo unde alte produse informatice nu fac faţă.
Efectele utilizării BD conduc spre avantajele oferite de acestea:
-
elimină redundanţele necontrolate;
-
creşte productivitatea activităţii informatice;
-
oferă suport informaţional optim pentru conducere şi execuţie;
-
permite interogarea de către toate categoriile de utilizatori;
-
conduce spre aplicaţii deschise.
Efortul depus pentru realizarea şi întreţinerea unei BD este considerabil şi de aceea investiţia necesară trebuie fundamentată pentru a putea fi recuperată.
Fundamentarea investiţiei pentru o aplicaţie cu BD se face prin studiul de fesabilitate (analiza preliminară) care va conţine un studiu al costurilor şi o evaluare a efortului de realizare şi întreţinere.
Etape care trebuie parcurse pentru stabilirea eficienţei BD:
1.
Studiul costurilor iniţiale (de realizare)
·
costul software-ului necesar;
·
costul hardware-ului necesar;
·
costul impus de trecerea de la sistemul existent la SGBD;
·
costul resurselor necesare (umane, materiale, informaţionale etc.);
·
costul consultanţei tehnice.
2.
Evaluarea costurilor de funcţionare a BD
·
costul de punere în funcţiune;
·
costul de exploatare;
·
costul de întreţinere şi dezvoltare.
3.
Calcule de rentabilitate
·
utilizarea unor metode specifice (ex. Analiza Cost Beneficiu)
·
utilizarea unor instrumente hardware şi software specializate pentru BD (cresc performanţa, scad portabilitatea).
BAZE DE DATE ORIENTATE OBIECT( BDOO) ŞI VFP OBIECTUAL
6.1 Conceptul de baze de date orientate obiect
6.2 Elemente de proiectare a BDOO
6.3 Tehnici de implementare a BDOO
6.4 VFP obiectual
6.1 Conceptul de baze de date orientate obiect (BDOO)
Limitele sistemelor relaţionale, în special cele referitoare la volume mari de date şi complexitatea ridicată a datelor, au determinat evoluţia spre sistemele orientate obiect.
Dezvoltarea BDOO (generaţia a treia de BD) a fost favorizată (începand cu anii `90) de: noul context informatic, noile tipuri de baze de date, evoluţia limbajelor de programare.
Tehnologia OO = totalitatea conceptelor, metodelor, proceselor şi instrumentelor utilizate pentru construcţia sistemelor cu obiecte.
Aplicarea tehnologiei OO la SBD a însemnat avantaje privind îmbunătăţirea structurii de date (modelul OO) şi a celorlalte componente ale sistemului.
a) Caracteristici ale BDOO
1. Sunt tratate în mod unitar (ca obiecte): datele, programele, comunicaţia => independenţa totală între ele.
2. Comunicaţia şi distribuirea sunt asigurate atât între date, cât şi între programe.
3. Structura de date este simplificată foarte mult=>uşurinţa în utilizare şi portabilitate ridicată.
4. Lucrul cu obiecte ne apropie firesc de lumea reală, în care se gasesc obiecte care au proprietaţi, asupra cărora acţionăm noi.
5. Pot fi abordate foarte multe domenii din lumea reală în care se regăsesc cele mai diferite tipuri de date.
6.Se asigură: accesul neprocedural, comunicaţia, portabilitatea, deschiderea aplicaţiilor cu BD.
b) Notiuni utilizate
Toate noţiunile prezentate la definirea structurii modelului OO: clase (tipuri) de obiecte, obiecte, metode, mesaje, instanţe, caracteristici (principii) fundamentale ale obiectelor.
Programul este o secvenţă liniara de definiri şi apeluri de obiecte şi clase de obiecte.
BDOO este o mulţime de clase de obiecte persistente(în memoria externă), organizată coerent şi ordonată în ierarhii, partajată pentru utilizatorii concurenţi.
SGBDOO este suportul software complet care asigură descrierea (structura obiectului), manipularea şi protecţia datelor organizate dupa modelul OO.
Sinteza conceptelor din BDOO:
lumea se reprezintă clase de au drept Obiectele conţin Proprietăţi Domeniu
reală prin obiecte instanţe (variabile de valori şi
(entităţi fizice) (structurare de instanţă) stări
pe ierarhii)
·
nume
·
identificator
·
metode
·
mesaje
·
implementare (privată)
·
interfaţă (publică)
·
caracteristici fundamentale
Paralelă între noţiunile utilizate în sistemele relaţionale şi orientate obiect:
Orientat obiect=>Ierarhia de clase=>Clasa de obiecte=>Obiect=>Variabila de instanţă (proprietate)=>Identificator=>Relaţional=>Schema BD=> =>Tabela=>Tuplu=>Atribut=>cheie
6.2. ELEMENTE DE PROIECTARE A BDOO
Dezvoltarea tehnologiei OO include şi o serie de metodologii utilizate pentru realizarea aplicaţiilor cu BDOO. (exemplu OMT – Object Modeling Technique).
Diferitele metodologii precizează etape (paşi) necesare a fi parcurse pentru realizarea unei BDOO.
Sintetizand, etapele din diferitele metodologii conduc la urmatoarele activităţi: analiza, proiectarea, elaborarea programelor, implementarea şi exploatarea .
a)Analiza
Rolul activităţii de analiză este de a preciza universul de discurs (se identifică entităţile fizice şi operaţiile necesare).
Paşii parcurşi la analiză sunt:
-se delimitează universul de discurs pornind de la lumea inconjuratoare;
-se identifică obiectele pornind de la universul de discurs;
-se clasifică obiectele dupa proprietăţi şi comportament;
-se identifică secvenţele de mesaje către obiecte (legăturile dintre obiecte);
-se determină secvenţele de activităţi şi ciclu de viaţă al obiectelor (modelarea).
Parcurgerea paşilor de mai sus se face prin reluari succesive a unor paşi precedenţi.
Rezultatul analizei este un ansamblu de specificaţii scrise în comportamentul cerut.
b)Proiectarea
Rolul activităţii de proiectare este de a furniza metode pentru reprezentarea obiectelor identificate la analiză.
Metode pentru proiectarea BDOO: diagrama obiectelor, specificaţiile obiectelor.
1. Diagrama obiectelor: numele proprietăţilor obiectelor se scriu într-un dreptunghi, iar sub acesta se scrie cu litere mari numele obiectului.
Numele proprietăţilor se scriu cu litere mici, iar dacă o proprietate este la randul ei obiect atunci se scrie cu litere mari.
Orice proprietate, care nu este obiect, poate lua o mulţime de valori ( domeniul de valori) şi se descrie prin: tip, lungime, restricţii.
Daca proprietatea este un obiect atunci domeniul este reprezentat de o mulţime de instanţede obiecte (obiecte particulare).
Viziunea (view) reprezinta ansamblul proprietăţilor văzute de un utilizator din totalul celor existente într-un obiect.
Metoda diagramei dă o imagine grafică a structurii obiectelor şi a legaturilor dintre ele.
Exemplu de diagramă de obiecte pentru activitatea didactică:
marca anstudiu nrsala
disciplina nrstud facultate
anstudiu tip
NRSTUD
SALA
ACTIVDID NRSTUD SALA
2.Specificaţiile obiectelor: liste de propoziţii explicative care conţin informaţii despre structura obiectelor şi a legăturilor dintre ele.
Listele, ordonate după diferite criterii, pot fi de forma:
-definiţii ale obiectelor ;
-enumerarea obiectelor şi a proprietăţilor acestora ;
-enumerarea domeniilor şi definiţii ale acestora;
-descrieri semantice ale obiectelor;
-restricţii asupra obiectelor.
Nota.
În procesul de proiectare a BDOO obiectele pot fi grupate:
-simple = au proprietăţi cu o singura valoare (domeniu cu o valoare) şi au proprietăţi ce nu sunt obiecte
-compozite = au cel puţin o proprietate cu valori multiple şi au proprietăţi ce nu sunt obiecte
-compuse = au cel puţin o proprietate care este obiect;
-asociate = obiecte independente care au rolul de a stabili o legatura între alte obiecte (apar ca proprietăţi ale obiectelor care le leagă);
-agregate = obiecte ce reprezintă grupuri de entităţi şi conţin proprietăţi de grup ce se transmit tuturor instanţelor subclaselor (moştenirea).
c)Elaborarea programelor
Programele pentru definirea şi manipularea obiectelor se scriu într-un SGBDOO (ex.02, Jasmine,etc) , care conţin limbaje de programare orientate obiect.
Elaborarea programelor se desfăşoară pe baza specificaţiilor obtinute prin activitatea de proiectare a BDOO.
Porgramele sunt secvenţe liniare de descrieri de obiecte şi de apeluri de obiecte
(mesaje).
În SBDOO se foloseşte intens reutilizarea programelor.
d) Implementarea şi exploatarea
Sunt activităţi care au rolul de a pune în funcţiune o BDOO la parametrii proiectaţi.
În cazul unor disfuncţionalităţi se revine la o activitate precedentă şi se produce o noua versiune a BDOO.
6.3.Tehnici de implementare a BDOO
1. Gestiunea mediului limbajului de programare: trebuie asigurată tratarea conceptelor modelului orientat obiect prin limbaje de programare corespunzatoare.
2. Reprezentarea obiectelor: modelul utilizat poate fi simplu (obiecte mici şi puţine) sau complex (obiecte mari sş multe—structurate).
3. Gestiunea persistenţei : se descriu şi manipuleaza date permanente (persistente), în acelaşi mod cu cele temporare. Persistenţa se asigura prin :
-tipaj = numai anumite tipuri (clase) de obiecte pot deveni persistente;
-conectivitate = numai obiectele care rezultă (direct sau indirect) din alte obiecte persistente vor deveni persistente;
-stocaj = toate obiectele plasate într-un spaţiu explicit declarat devin persistente.
4. Gestiunea memoriei : obiectele pot fi memorate atât în memoria internă cât şi în cea externă.
Identificatorul (logic sau fals) de obiect joacă un rol important privind localizarea obiectului în memorie.
5. Extensibilitatea: trebuie să se permită noi structuri de date în BDOO creata deja.
6. Distribuirea: trebuie să se permita lucrul distribuit în reţea şi să se separe prelucrarea
(consumă memorie interna ) de stocarea (consumă memorie externa) obiectelor.
7. Gestiunea versiunilor: trebuie păstrate stările succesive ale obiectelor şi evoluţia lor în timp.
8. Gestiunea obiectivelor traditionale ale unei BD.
Notă: vezi aspecte comparative între BDOO şi BDR în anexa 3.
6.4. VFP OBIECTUAL
a) Programarea vizuală = tehnica de programare utilizată pentru crearea de interfeţe utilizator prietenoase şi funcţionale.
Se integrează componenta de creare a interfeţei cu cea de atribuire de cod obiectelor din aceasta interfaţă . Programatorul creează obiectele, le poziţionează pe ecran în locul dorit şi apoi le atribuie cod. Se obţine astfel o privire de ansamblu asupra obiectelor vizuale, asupra proprietăţilor lor, precum şi codul necesar tratării fiecărui “eveniment” ce poate să apară.
Tehnica presupune ca programatorul să ştie ce are de facut fără să-l intereseze prea mult cum trebuie făcut. Ea dă posibilitatea să se dezvolte programe fără să se scrie nici o linie de cod sursă sau să se scrie foarte putin. Programarea vizuală este un caz particular de POO.
b) Noţiunile din tehnologia OO implementate în VFP sunt :
- clase de obiecte;
-
obiecte;
-
proprietăţi ale obiectelor;
-
metode (comportamentul obiectelor);
-
evenimente (acţiuni asupra obiectelor).
Tipurile de obiecte tratate în VFP:
-
containere : obiect ce poate conţine alte obiecte (ex. - FORM SET);
-
controale : obiecte conţinute în alte obiecte (ex. - un buton);
Proprietăţile sunt atribute ale obiectelor care definesc caracteristicile acestora, din punctele de vedere: stare sau comportament. Ele reprezinta datele.
Tipuri de proprietăţi în VFP:
-
publice : accesibile din interiorul şi din afara clasei (implicit)
-
protejate (Protected) : accesibile doar din interiorul clasei.
Nota: accesul la proprietăţi se face prin metode.
Metodele descriu comportamentul obiectelor carora le sunt asociate (Procedure/ Function).
În VFP ele apar în definirea claselor dupa descrierea proprietăţilor şi definesc o operaţie.
Ele reprezintă codul sursă.
Evenimentele sunt acţiuni iniţiate de sistem (interne) sau de utilizator (externe) la care un obiect ştie să răspundă.
Ex. de evenimente :-externe : click mouse, apasări taste;
-interne : iniţializare obiect, generarea unei erori.
c) Caracteristici ale claselor de obiecte implementate in VFP
·
Încapsurarea se realizează prin includerea proprietăţilor (datelor) şi metodelor (codul) într-un acelaşi obiect (cu DEFINE CLASS). În plus, datele şi codul pot fi protejate (PROTECTED) şi ascunse (HIDDEN).
·
Derivarea se realizează prin generarea de noi clase pornind de la un set de clase de bază existente (oferite de sistem). O clasă derivată va avea funcţiile clasei de bază plus altele noi. Caracteristica este strâns legată de procesul de realizare a obiectelor.
·
Moştenirea este realizată automat de sistem prin derivare. Astfel o clasă derivată va moşteni automat proprietăţile (datele) şi metodele (codul) clasei de bază din care se generează. Orice actualizare în clasa de bază se va genera automat în clasele derivate din ea.
·
Ierarhia de clase este realizată prin structurarea claselor de bază oferite de VFP într-un arbore de forma:
CAP. 7 BAZE DE DATE DISTRIBUITE (BDD)
7.1. Conceptul de BDD
7.2. Structura unei BDD
7.3. Avantajele şi limitele sistemelor distribuite
7.1. Conceptul de BDD
Evoluţia BD locale spre BDD a avut loc în paralel cu progresele din telecomunicaţii şi din reţelele de calculatoare.
Reţelele de calculatoare au cunoscut o puternică expansiune după apariţia microcalculatoarelor.
Tipuri de reţele de calculatoare:
-
locale (LAN – Local Area Networks)
-
globale (WAN – Wide Area Networks)
-
asincrone (ATM – Asyncron Transfer Mode)
Software-ul dintr-o reţea de calculatoare:
·
sisteme de operare din noduri
·
software-ul pentru baze de date
·
software-ul de reţea (comunicaţie)
Notă. Tendinţa actuală este de integrare a software-ului de reţea (câte două sau toate trei).
BDD = o mulţime de colecţii de date memorate, conform unui model de date, în diferite locuri (noduri) ale unei reţele de calculatoare, colecţii legate logic (integrate) astfel încât să constituie o BD unică.
Definirea şi manipularea datelor se face cu un SGBDD
Caracteristici ale BDD
1.
Concepţia de organizare a datelor în sisteme distribuite este, în mare parte, aceeaşi cu cea de la BD locale (modele de date, metodologii de proiectare, obiective, etc.), adăugându-se unele aspecte specifice.
2.
Utilizatorul manipulează BDD fără a cunoaşte localizarea datelor.
3.
Criteriile după care se distribuie datele sun variate şi depind de cerinţele aplicaţiei informatice:
-
distribuirea uniformă = în diferitele moduri există aceleaşi tipuri de date cu aceeaşi structură;
-
distribuirea multiformă = ansamblul nodurilor din reţea este împărţit în clase;
-
distribuirea liberă = datele (BD) locale din noduri au structuri diferite.
4.
Datele sunt multiplicate din diferite considerente (fiabilitate, performanţă, frecvenţă de utilizare, siguranţă etc.) dar acest lucru este invizibil pentru utilizator.
5.
Este permis accesul concurent la datele distribuite.
Notă. Caracteristicile de mai sus sunt asigurate de către SGBD distribuit. Pentru utilizatorul care foloseşte programele de aplicaţie toate aceste caracteristici sunt invizibile.
7.2. Structura unei BDD
Modelul de date implementat într-o BDD este unul dintre cele mai fundamentale, adoptat la modul de lucru reţea.
a)
Nivelurile de referinţă într-o BDD: global, local (fig. 7.1.)
utilizatori
Schema globala nivel global
Schema
locală 1 … nivel local
BD
locală 1 … BDD
Fig. 7.1. Niveluri de referinţă într-o BDD
-
Nivelul global conţine schema globală care include:
·
schema conceptuală globală = întreaga BDD văzută ca un tot unitar şi este independentă de aplicaţii;
·
schema internă globală = partea din BDD pe care o “vede” utilizatorul şi este independentă de aplicaţii;
·
schema internă globală = modul de partiţionare (alocare) al BDD.
-
Nivelul local conţine schemele locale care include:
·
schema conceptuală locală = întreaga BD locală, dintr-un nod, şi este independentă de aplicaţie;
·
schema externă locală = partea din BD locală pe care o “vede” un utilizator şi este independentă de implementare;
·
schema internă locală = structura BD locale şi modul de acces la date.
b)
tipuri de BDD
1.
Centralizate = întreaga BD se găseşte pe un singur calculator central din reţea, la care au acces toţi utilizatorii.
Avantaje: spaţiu redus, actualizări rapide, cost redus.
Dezavantaje: concurenţă mare, timp de acces mare, siguranţă redusă.
2.
Multiplicate = datele sunt multiplicate pe mai multe calculatoare din reţea.
Avantaje: concurenţă redusă, siguranţă mare, timp de acces mic.
Dezavantaje: spaţiu mare, actualizări complicate, cost mare.
3.
Partiţionate = datele sunt împărţite pe fragmente logice, ce se găsesc pe mai multe calculatoare din reţea .
Avantaje: timp de acces mediu, cost mediu, spaţiu mic, actualizare rapidă.
Dezavantaje: siguranţă redusă, rapoartele de sinteză se obţin greu.
c)
Cereri distribuite într-o BDD (fig. 7.2.)
Nivel global Nivel local
cerere -evaluare cereri Executor subcerere adaptare
globală -descompunere locale distribuit
utilizator BD
locale
răspuns răspunsuri răspuns SGBD
global -compunere locale parţial locale
Catalog struc.
globale
Fig. 7.2. Prelucrarea unei cereri distribuite
Fluxul unei operaţii de interogare pe o BDD, pornind de la o cerere de regăsire distribuită şi până la obţinerea rezultatului:
1.
Utilizatorul formulează o cerere globală dintr-o BDD.
2.
Cererea globală este preluată de către SGBDD, evaluată şi descompusă pe baza datelor existente în Catalogul (dicţionarul) de structură globală. Rezultă un set de cereri locale.
3.
Cererile locale sunt transmise unui Executor distribuit care le împarte în subcereri, funcţie de localizarea datelor necesare.
4.
Printr-un proces de adoptare, subcererile sunt interpretate de către SGBD-urile locale care accesează datele necesare.
5.
Prin interogarea BD locale se obţin răspunsurile preluate de SGBD-urile locale.
6.
SGBD-urile locale construiesc răspunsuri parţiale.
7.
Executorul distribuit colectează răspunsurile parţiale şi produce răspunsuri locale.
8.
Răspunsurile locale sunt compuse cu ajutorul datelor din Catalogul de structură globală şi rezultă răspunsul global. Acesta este furnizat utilizatorului care a formulat cererea de regăsire.
Notă. Întregul proces de preluare al cererii distribuite este asigurat de către SGBD, fiind invizibil pentru utilizator.
7.3. Avantajele şi limitele sistemelor distribuite
Avantaje:
-
datele pot fi folosite uşor de mai mulţi utilizatori situaţi în puncte geografice diferite;
-
se reduce concurenţa la date, faţă de centralizat;
-
se asigură fiabilitate ridicată pentru sistem;
-
se poate realiza modular întregul sistem, ceea ce îi conferă deschidereş
-
avantajele lucrului în reţea de calculatoare.
Dezavantaje:
-
complexitatea ridicată a sistemului determină realizarea şi exploatarea lui, mai dificil;
-
dificultăţi de trecere de la exploatare locală la distribuită;
-
investiţie mare care se recuperează în timp;
-
timp de răspuns, uneori, mai mare.